package com.zb.nio.pipe;

/**
 * @author: zhaobin
 * @date: 2024/1/28 17:40
 * @Description:
 */
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.Pipe;

/**
 * @author 土味儿
 * Date 2021/12/3
 * @version 1.0
 */
public class PipeDemo {
    public static void main(String[] args) throws IOException {
        // 1、获取管道
        Pipe pipe = Pipe.open();
        // 2、获取sink通道，用来传送数据
        Pipe.SinkChannel sink = pipe.sink();
        // 3、创建发送缓冲区，并写入数据
        ByteBuffer buf1 = ByteBuffer.allocate(1024);
        buf1.put("Hello World!测试".getBytes());
        // 4、读写模式反转
        buf1.flip();
        // 5、sink发送数据：把buf1中的数据写入通道
        sink.write(buf1);

        // 6、获取source通道
        Pipe.SourceChannel source = pipe.source();
        // 7、创建接收缓冲区
        ByteBuffer buf2 = ByteBuffer.allocate(1024);
        // 8、读取数据，并输出
        // 把通道中的数据读入buf2
        int length = source.read(buf2);
        System.out.println(new String(buf2.array(),0,length));

        // 9、关闭
        source.close();
        sink.close();
    }
}
